package cineplanet.modelo;

import java.io.Serializable;
import java.util.*;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * The persistent class for the usuario database table.
 * 
 */
@Entity
@Table(name = "usuario")
@NamedQueries({
		@NamedQuery(name = "Usuario.findAll", query = "SELECT us FROM Usuario us"),
		@NamedQuery(name = "Usuario.findByIdUsuario", query = "SELECT us FROM Usuario us WHERE us.idUsuario = :idUsuario"),
		@NamedQuery(name = "Usuario.findByNombres", query = "SELECT us FROM Usuario us WHERE us.nombres = :nombres"),
		@NamedQuery(name = "Usuario.findByApellidos", query = "SELECT us FROM Usuario us WHERE us.apellidos = :apellidos"),
		@NamedQuery(name = "Usuario.findBySexo", query = "SELECT us FROM Usuario us WHERE us.sexo = :sexo"),
		@NamedQuery(name = "Usuario.findByDireccion", query = "SELECT us FROM Usuario us WHERE us.direccion = :direccion"),
		@NamedQuery(name = "Usuario.findByDistrito", query = "SELECT us FROM Usuario us WHERE us.distrito = :distrito"),
		@NamedQuery(name = "Usuario.findByCiudad", query = "SELECT us FROM Usuario us WHERE us.ciudad = :ciudad"),
		@NamedQuery(name = "Usuario.findByDepartamento", query = "SELECT us FROM Usuario us WHERE us.departamento = :departamento"),
		@NamedQuery(name = "Usuario.findByEmail", query = "SELECT us FROM Usuario us WHERE us.email = :email"),
		@NamedQuery(name = "Usuario.findByClave", query = "SELECT us FROM Usuario us WHERE us.clave = :clave"),
		@NamedQuery(name = "Usuario.findByDni", query = "SELECT us FROM Usuario us WHERE us.dni = :dni"),
		@NamedQuery(name = "Usuario.findByFechaNac", query = "SELECT us FROM Usuario us WHERE us.fechaNac = :fechaNac"),
		@NamedQuery(name = "Usuario.findByTelefono", query = "SELECT us FROM Usuario us WHERE us.telefono = :telefono"),
		@NamedQuery(name = "Usuario.findByCelular", query = "SELECT us FROM Usuario us WHERE us.celular = :celular"),
		@NamedQuery(name = "Usuario.findByOcupacion", query = "SELECT us FROM Usuario us WHERE us.ocupacion = :ocupacion"),
		@NamedQuery(name = "Usuario.findByEstadoCivil", query = "SELECT us FROM Usuario us WHERE us.estadoCivil = :estadoCivil") })
public class Usuario implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Basic(optional = false)
	@Column(name = "idUsuario")
	private Integer idUsuario;
	@Column(name = "apellidos")
	private String apellidos;
	@Column(name = "celular")
	private int celular;
	@Column(name = "ciudad")
	private String ciudad;
	@Column(name = "clave")
	private String clave;
	@Column(name = "departamento")
	private String departamento;
	@Column(name = "direccion")
	private String direccion;
	@Column(name = "distrito")
	private String distrito;
	@Column(name = "dni")
	private int dni;
	@Column(name = "email")
	private String email;
	@Column(name = "estadoCivil")
	private byte estadoCivil;
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "fechaNac")
	private Date fechaNac;
	@Column(name = "nombres")
	private String nombres;
	@Column(name = "ocupacion")
	private String ocupacion;
	@Column(name = "sexo")
	private byte sexo;
	@Column(name = "telefono")
	private int telefono;

	// bi-directional many-to-one association to Tarjeta
	// @OneToMany(mappedBy="usuario")
	// private Set<Tarjeta> tarjetas;
	@OneToMany(cascade = CascadeType.ALL, mappedBy = "idUsuario")
	private Collection<Tarjeta> tarjetaCollection;

	// bi-directional many-to-one association to Venta
	// @OneToMany(mappedBy="usuario")
	// private Set<Venta> ventas;
	@OneToMany(cascade = CascadeType.ALL, mappedBy = "idUsuario")
	private Collection<Venta> ventaCollection;

	public Usuario() {
	}

	public int getIdUsuario() {
		return this.idUsuario;
	}

	public void setIdUsuario(int idUsuario) {
		this.idUsuario = idUsuario;
	}

	public String getApellidos() {
		return this.apellidos;
	}

	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}

	public int getCelular() {
		return this.celular;
	}

	public void setCelular(int celular) {
		this.celular = celular;
	}

	public String getCiudad() {
		return this.ciudad;
	}

	public void setCiudad(String ciudad) {
		this.ciudad = ciudad;
	}

	public String getClave() {
		return this.clave;
	}

	public void setClave(String clave) {
		this.clave = clave;
	}

	public String getDepartamento() {
		return this.departamento;
	}

	public void setDepartamento(String departamento) {
		this.departamento = departamento;
	}

	public String getDireccion() {
		return this.direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public String getDistrito() {
		return this.distrito;
	}

	public void setDistrito(String distrito) {
		this.distrito = distrito;
	}

	public int getDni() {
		return this.dni;
	}

	public void setDni(int dni) {
		this.dni = dni;
	}

	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public byte getEstadoCivil() {
		return this.estadoCivil;
	}

	public void setEstadoCivil(byte estadoCivil) {
		this.estadoCivil = estadoCivil;
	}

	public Date getFechaNac() {
		return this.fechaNac;
	}

	public void setFechaNac(Date fechaNac) {
		this.fechaNac = fechaNac;
	}

	public String getNombres() {
		return this.nombres;
	}

	public void setNombres(String nombres) {
		this.nombres = nombres;
	}

	public String getOcupacion() {
		return this.ocupacion;
	}

	public void setOcupacion(String ocupacion) {
		this.ocupacion = ocupacion;
	}

	public byte getSexo() {
		return this.sexo;
	}

	public void setSexo(byte sexo) {
		this.sexo = sexo;
	}

	public int getTelefono() {
		return this.telefono;
	}

	public void setTelefono(int telefono) {
		this.telefono = telefono;
	}

	public void setTarjetaCollection(Collection<Tarjeta> tarjetaCollection) {
		this.tarjetaCollection = tarjetaCollection;
	}

	public Collection<Tarjeta> getTarjetaCollection() {
		return tarjetaCollection;
	}

	public void setVentaCollection(Collection<Venta> ventaCollection) {
		this.ventaCollection = ventaCollection;
	}

	public Collection<Venta> getVentaCollection() {
		return ventaCollection;
	}

	// public Set<Tarjeta> getTarjetas() {
	// return this.tarjetas;
	// }
	//
	// public void setTarjetas(Set<Tarjeta> tarjetas) {
	// this.tarjetas = tarjetas;
	// }
	//
	// public Set<Venta> getVentas() {
	// return this.ventas;
	// }
	//
	// public void setVentas(Set<Venta> ventas) {
	// this.ventas = ventas;
	// }
	@Override
	public int hashCode() {
		int hash = 0;
		hash += (idUsuario != null ? idUsuario.hashCode() : 0);
		return hash;
	}

	@Override
	public boolean equals(Object object) {
		// TODO: Warning - this method won't work in the case the id fields are
		// not set
		if (!(object instanceof Usuario)) {
			return false;
		}
		Usuario other = (Usuario) object;
		if ((this.idUsuario == null && other.idUsuario != null)
				|| (this.idUsuario != null && !this.idUsuario
						.equals(other.idUsuario))) {
			return false;
		}
		return true;
	}

	@Override
	public String toString() {
		return "cineplanet.modelo.Usuario[idUsuario=" + idUsuario + "]";
	}
}